/**
 * Created by LiYang on 16-9-27 下午2:07.
 *
 */

package com.example.db.generate;

import android.content.ContentValues;

import com.example.db.DBSerializable;

import java.util.Collection;
import java.util.Map;


public interface GenerateHandler<T extends DBSerializable> {
    String getTableName();

    String createTable();

    /**
     * 生成 select 语句
     */
    String selectSql(String condition, String sort);

    String selectFunSql(String[] columns, String condition);

    String selectCustomSql(String[] columns, String condition, String sort);

    /**
     * 生成 insert 语句
     */
    String insertSql(Collection<String> fieldNames);

    /**
     * 生成 delete 语句
     */
    String deleteSql(String condition);

    /**
     * 生成 update 语句
     */
    String updateSql(Map<String, Object> fieldMap, String condition);

    /**
     * 生成 select 分页语句
     */
    String selectSqlForPager(int pageNumber, int pageSize, String condition, String sort);

    ContentValues getContentValues(T t);

    ContentValues getContentValues(T t, String[] columns);
}
